/**
 * IPackModelService.java
 * Created at 2017-4-18
 * Created by shihui
 * Copyright (C) 2017 BROADTEXT SOFTWARE, All rights reserved.
 */
package com.broadtext.rms.basic.service;

import java.util.HashMap;
import java.util.Map;

import com.broadtext.common.bean.EntityPageBean;
import com.broadtext.common.exp.DaoException;
import com.broadtext.common.exp.ServiceException;
import com.broadtext.common.service.IEntityService;
import com.broadtext.common.utils.RmsUtil;
import com.broadtext.rms.basic.model.TrPackCustomFactory;
import com.broadtext.rms.basic.model.TtPackModel;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;

/**
 * <p>ClassName: IPackModelService</p>
 * <p>Description: 电池型号接口服务层</p>
 * <p>Author: shihui</p>
 * <p>Date: 2017-4-18</p>
 */
public interface IPackModelService extends IEntityService<TtPackModel> {

    /**
     * 
     * <p>Description: 查询电池型号列表</p>
     * @param map 查询条件
     * @param pageBounds 翻页信息
     * @return 电池型号
     * @throws ServiceException 异常
     */
    EntityPageBean<TtPackModel> getPackModels(Map<String, Object> map, PageBounds pageBounds) throws ServiceException;

    /**
     * 
     * <p>Description: 批量删除电池型号</p>
     * @param idArray 电池型号ID序列
     * @param sysUser 当前操作用户
     * @return 操作结果
     * @throws ServiceException 异常
     */
    boolean deleteByIds(String[] idArray, String sysUser) throws ServiceException;

    /**
     * 
     * <p>Description: 根据ID查询电池型号详情（展示）</p>
     * @param pkId 电池型号ID
     * @return 详情
     * @throws ServiceException 异常
     */
    TtPackModel findPackModelById(String pkId) throws ServiceException;

    /**
     * 
     * <p>Description: 查询所有有效的电池型号（用于下拉框显示）</p>
     * @return 电池型号list
     * @throws ServiceException 异常
     */
    Object findPackModelList() throws ServiceException;

    /**
     * 
     * <p>Description: 验证电池型号已存在</p>
     * @param model 电池型号实体
     * @return 验证结果：true已存在；false不存在
     * @throws ServiceException 异常
     */
    boolean checkModelExist(TtPackModel model) throws ServiceException;

    /**
     * 
     * <p>Description: 编辑或删除电池型号前验证是否已被使用</p>
     * @param pkId 型号ID
     * @return 验证结果：true=可修改；false=不可修改
     * @throws ServiceException 异常
     */
    boolean checkModelEditable(String[] pkId) throws ServiceException;
    
    /**
     * <p>Description: 初始化电池型号关联绑定页面</p>
     * @param id packModel主键id
     * @return 绑定页面结果集
     * @throws DaoException 异常
     */
    Map<String, Object> initBatteryCorrelation(String id) throws ServiceException;
    
    /**
     * 
     * <p>Description: TODO</p>
     * @param tmPackCustomFactory
     * @param loginUser
     * @throws DaoException
     */
    void saveBatteryCorrelation(TtPackModel ttPackModel, String loginUser) throws ServiceException;
}
